perm filename WIZARD.TXT[SS,SYS]1 blob
sn#546606 filedate 1980-11-21 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00015 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00003 00002 This file documents various WAITS features and facts that system
C00005 00003 The program SYSFIX[SS,SYS] compares the protected part of the system
C00007 00004 The WHO program is capable of displaying one or more blocks of data from
C00013 00005 The PK program is capable of displaying the text in the system disaster
C00015 00006 Flags set automatically upon Reload: PDP-10 SW register.
C00021 00007 KLDCP: compiling it, putting it on tape, reloading 11
C00023 00008 How to put up new DSKDMP[SS,SYS] and new BOOT on console-11 dectape:
C00026 00009 HOWTO unwedge the MagTape service:
C00027 00010 The program DEV[SS,SYS] types out the names of all devices in the DDB chain,
C00028 00011 The program CORMON[SS,SYS] types out current core usage parameters.
C00029 00012 The program UP2DDT[SS,SYS] runs P2 EDDT from a P1 terminal, with various
C00030 00013 The program P2LOAD[1,2] can mark P2 memory up or down, reload P2 from any
C00032 00014 A Tale of Two CTYs
C00036 00015 WSYNC
C00037 ENDMK
C⊗;
This file documents various WAITS features and facts that system
programmers may need or want to know, but which are of little or no use to
the general user community. Some special programs for system programmers
are documented here.
Some pieces of the WAITS operating system have their internal workings
documented in the files *.DOC[SS,SYS].
WIZARD.TXT is intended to include all the common techniques of managing
the system. This file provides a place to record anything that may be of
use to future (and present) system programmers, whenever such information
happens to be found or needed online.
The program SYSFIX[SS,SYS] compares the protected part of the system
against the corresponding part of WAITS.DMP[S,SYS], to look for system
clobberage (e.g., by the III processor or parity errors). Thus found,
such clobberage can be fixed manually (e.g., with UEDDT) or with SYSFIX
using the REENTER monitor command.
RUN SYSFIX[SS,SYS] and the program will type out all words that do not
match between system core and the DMP file. Note that only the areas
from PATCH through PATCH+77 and CHKBEG to CHKEND are checked.
If you REENTER the program, then you will be allowed to selectively "fix"
any word that differs by taking the value from disk and placing it in core.
Note that corrections are made in precisely the order that commands to fix
them are given and that PATCH is checked first (in case you want to copy
a patch from the DMP file into core).
The WHO program is capable of displaying one or more blocks of data from
tables within the system. WHO has two display modes: WHO mode (displays
jobs and files) and TABLE mode (displays system tables). The commands for
moving the displayed text around on the screen are the same in both modes.
(Thus, you can request display of more tables than fit on the screen and
then move the window around to see different pieces of it, just like with
the normal WHO display.)
Below are the commands that make WHO display selected system table(s).
Note: For both typed commands and commands given inside an indirect file,
any command that does not include a symbol name applies to the table whose
symbol name was last given.
αβ! Go into TABLE display mode (display system tables)
! Return to WHO mode (display jobs and files)
*<symbol> display the one table starting at location named by <symbol>
+<symbol> add <symbol> to list of tables being displayed
-<block> use symbol value inside this block, in case last
symbol entered is multiply defined
+<octal nbr> display this many cells of the table (default is 1 word)
"<octal nbr> start displaying the table with this octal offset from
the beginning of the table (forced to multiple of 8)
F display the table in full-word format
L display the table in left-halfword format
R display the table in right-halfword format
You can type just "!" (not αβ!) in the monitor command that starts WHO, in
order to get into TABLE mode immediately. (Otherwise, WHO normally starts
in normal job-display mode.) For example, W!@MACS<cr>.
All of the system's main data areas are available for display by WHO; this
includes both the cached and uncached data areas in lowcore plus all of
free storage. However, the write-protected parts of the system (code) are
not accessible from WHO (since they're not mapped into WHO's upper
segment). Undefined symbols and symbols with address values outside the
available range will be displayed followed by question marks.
In either of the half-word formats, eight data words are displayed per
line; in full-word format, four data words are displayed per line. Data
words that contain zero are not displayed, as an aid to picking out the
non-zero data, and if all the words to be displayed on a given line are
zero, then the whole line is omitted.
If only one word of a given table is to be displayed (this is the
default), then that word is always displayed on the same line as the name
of the word and in full-word format.
In an indirect file (e.g., file used with @ command, with default
extension .DIS), to select which tables should be displayed, use the
following commands (you must already be in TABLE mode, with αβ! or W !
typed manually). The default PPN in TABLE mode is [SS,SYS] (in normal
mode the default PPN is [P,DOC]). Thus, useful indirect files for setting
up the display of interesting system tables can be kept on [SS,SYS].
<symbol> add <symbol> to list displayed (note no + or *)
-<block> last symbol entered is from this block
+<octal nbr> display this many cells of the table
"<octal nbr> display table with this octal offset from table beginning
= display the table in full-word format
< display the table in left-halfword format
> display the table in right-halfword format
When WHO is initially put into TABLE display mode (and whenever the
N[ormalize] command is given while in TABLE mode), there is a default
group of tables displayed. This default group may vary from time to time
as system requirements change. However, using indirect files is a good
way to repeatedly view selected tables.
-- ME 20 Oct 80
The PK program is capable of displaying the text in the system disaster
buffer (whose text gets typed out on the CTY). There are two ways of
having this text presented: type either αβ! or !<cr> when asked by PK for
a TTY number.
If you type αβ!, then the disaster text will be displayed -- if you have a
small display (e.g., DM) then the most recent text may not fit on the
display.
If you type !, then the disaster text will be typed out on the page
printer (piece of paper number 1, not 0), so that the most recent text
will be guaranteed to stay on the screen. However, on DDs and IIIs, then
method is much slower.
So, αβ! is recommended for DDs and IIIs, and ! is recommended for DMs.
Also, the αβ+ and αβ- commands can be used (in αβ! or ! modes) to add or
remove the blank lines that normally appear on the CTY, thus compressing
or uncompressing the display presentation.
Flags set automatically upon Reload: PDP-10 SW register.
When WAITS is started upon reload, it looks at the PDP-10 switch register
(36 bits) to determine if certain flags should be set automatically. If
the 37,,0 bits in the SW register are all on, then the right-half SW bits
indicate system flags to be set and the remaining left-half bits indicate
the time that the system should announce as when it will come up (if down).
To set the 37,,0 bits in the SW register, use the KLDCP command
SW 3 600000
which sets the SW register to 3,,600000. The remaining left-half bits
(777774,,0 bits) are read continuously from the PDP-11 switches labelled
15 to 0 on the front of the "KL-10" console (the two high-order switches,
labelled 17 and 16, are not used). To make the system set flags from SW
upon reload, set the right-most 3 PDP-11 switches up; these three PDP-11
switches represent the 34,,0 bits in the SW register.
To set the time that the system will come up, put the hour (00 to 23) in
the seven PDP-11 switches labelled 15 to 9, and put the minutes in the six
11-switches 8 to 3. If the hour given is 24 or bigger, then the available
message will say the system is down (if it is) "For a Long Time!".
To reload the system "down", the 0,,600000 bits should be on in the
SW register (in addition to the 37,,0 bits) to make the system set
the MAINTMODE and TTYLOK flags. Since this is the most common usage
of the automatic flag-setting feature, the SW register is normally
left set to 3,,600000 so that only the 3 low PDP-11 switches need to
be toggled to reload the system up or down.
However, sometimes it is desireable to make every reload set some other
flag(s), whether the system is being reloaded up or down. In this case
the appropriate SW register flags can be set with the SW command (in
KLDCP). Here are the meanings of the various SW bits (the table defining
these bits is at MCELTB in SYSINI, and it is looked at around SYSIN1 in
SYSINI; some special bits for DDT are looked at in SYIDDT). Of course,
the 0,,600000 bits should be off when reloading the system up and on when
reloading down, and the 37,,0 bits must be on to make the following bits
be looked at.
Right-
Half Flag
SW Bit Word Meaning
------- ------- --------
1 go to EDDT immediately, before really starting the system
2 don't keep DDT around (save core, especially for free storage)
10 CORNXM initial core NXMs are expected, proceed automatically from them
20 NOP2 don't use P2 memory (allows P2 to be debugged "offline" from WAITS)
40 SWPCH2 checksum every swap op after swap out
100 SWPCHK checksum every swap op (after swap in)
400 BLTSWP do BLT after swapin
1000 IMPPMS allow IMP to complain on CTY
2000 IMPDIE keep WAITS ArpaNet service down
4000 NOLOGIN don't allow anyone to log in
10000 EXPMOD unused
20000 DEBMOD make certain errors stop in DDT instead of just typing CTY msg
40000 IIIOFF don't run the IIIs (on F2, this is LITOFF, disables job in lights)
100000 DDOFF don't run the Data Disc
200000 MAINTM don't run phantoms, mark system as down
400000 TTYLOK disable most terminals, mark system as down
KLDCP: compiling it, putting it on tape, reloading 11
;To compile KLDCP:
.AL KL,SYS
.R PALX
*KLDCP/H
[ignore about 7 byte-too-large errors]
*↑C
.RU 11LOAD
*LKLDCP
*WKLDCP ; write it out with DDT
*BKLDCP ; write out a .L11 file for reloading into 11 using αX GRONK cmd.
*
;To put KLDCP on Dectape (if the Dectapes are working):
.R FILEX
*DTA:(VL)←KLDCP.BIN/I
*
;To reload KLDCP into the 11 from WAITS disk:
.al kl,sys
.ru 11load
TYPE ? FOR HELP
*aN EXTENDED COMMAND gronk
Reload the 11 via DTELOD UUO. L11 File - kldcp
11-Image is loaded into 10-memory.
Next, we gronk the 11 via DTELOD
According to the system, we're done now.
*
How to put up new DSKDMP[SS,SYS] and new BOOT on console-11 dectape:
The /D is a switch you need to give to CNVRT[KLM,SYS] to cause it to
make the right format BOOT.A10 (which you then rename to BOOT.D10).
The L switch types out the directory after it's done.
You could read the old BOOT off the tape with
BOOT.OLD←DTA2:BOOT.D10(VA)
.AL SS,SYS
.LOAD DSKDMP ;use proper assembly switch settings for DSKDMP
.SAVE DSKDMP
.LOAD DSKDMP ;use proper assembly switch settings for BOOT
.SAVE BOOT
.RU CNVRT[KLM,SYS]
*BOOT/D
↑C
.REN BOOT.D10←BOOT.A10
;Now mount console-11 dectape on DTA2
.R FILEX
*DTA2:(VAL)←BOOT.D10
↑C
.
There are currently (20 Oct 80) several versions of BOOT on the
console Dectape. They are named by adding either an N or an O
and/or a 1 to "BOOT", to get BOOT,NBOOT,OBOOT,BOOT1,NBOOT1,OBOOT1.
The BOOTy versions will boot DSKDMP.DMP[SS,SYS] (currently assumes two channels).
The NBOOTy versions will boot DSKDMP.NEW[SS,SYS] (assumes only one channel).
The OBOOTy versions will boot DSKDMP.OLD[SS,SYS] (doesn't exist).
The xBOOT versions assume that there are two disk channels (and two controllers).
The xBOOT1 versions assume that there is one disk channel (and one controller).
DSKDMP.FAI[SS,SYS] is the source file for both DSKDMP and BOOT. See the
various assembly switches on page two.
The xBOOTy files are loaded into the 11 with the KLDCP command LD,
e.g., LD NBOOT1<cr>. The DSKDMP program can then be loaded into the 10
with the KLDCP command DS.
We are currently (20 Oct 80) using NBOOT1 (LD NBOOT1) since only one
controller (controller number 1) is working.
Note that both BOOT and DSKDMP have compiled in tables telling which
channel (controller) each disk drive is on.
HOWTO unwedge the MagTape service:
The normal state of cells in MTCSER are:
DCREQ/ -1 the count of people waiting for the DC
MTREQ/ -1 the count of people waiting for the MTC
MTCUSR/ 0 job number of current MTC user
MTAVAL/ 0 non-zero means wake up someone waiting for MTC
The program DEV[SS,SYS] types out the names of all devices in the DDB chain,
in case you think the chain is broken, or you want to find out the order
of some devices or the number of certain kinds of DDB.
The program CORMON[SS,SYS] types out current core usage parameters.
The program UP2DDT[SS,SYS] runs P2 EDDT from a P1 terminal, with various
options, for debugging the P2 system. You must have the DEV privilege.
The program P2LOAD[1,2] can mark P2 memory up or down, reload P2 from any
DMP file, and/or tell what users are using P2 devices. The command
P2LOAD, given from the CTY, runs P2LOAD with the defaults of reloading P2
from P2SYS.DMP[S,SYS]. When run with the command RUN P2LOAD[1,2], the
default is NOT to reload P2, just to report any users of P2 devices (which
is always done). Defaults can be overridden by ending the monitor command
line with a semicolon and then any desired filename (for reloading from)
and/or switches. The available switches are:
/L reload
/N don't reload
/D mark P2 memory down (P1 system will use some other memory for
P2 variables, and P2 won't be able to see that memory P1 is using)
/U mark P2 memory up
/Q don't ask about P2 memory really being OK (when marking it up)
A Tale of Two CTYs
This writeup explains how to set up a WAITS CTY on the normal TTY scanner,
either in place of, or in addition to, the normal CTY. This feature
currently is not available on the CCRMA F2 version of WAITS, although it
could be made to work there with only a small amount of effort.
Assume that you want to make DCA port 55 be the CTY, and assume the
TTY number of the CTY is 160. If not, alter these instructions
correspondingly.
(0) Make sure that the system doesn't think TTY55 is a display. If it
does, do a TTY TTY55 NO DM command (or just TTY NO DM on TTY55). Make
sure that worked.
(1) Hopefully the DCA port will already have been set up by the system
to run at the right speed; if not, TTY TTY55 SPEED nnnn, where nnnn is
the correct baud rate, will set the speed. This may not work if you
have already done step (2) below. If you have done that step and the
above command doesn't work, then try TTY TTY160 SPEED nnnn.
(2) Set the low 7 bits of DCATAB+55 to 160 instead of 55.
(3) Set the right half of LINBIT+160 to 400055 instead of 0
(4) Set the cell SCNCTY to 55 instead of -1.
(5) If you want duplicate output on both the real CTY and the scanner CTY,
then zero the cell SUPCTY (else leave it -1). Duplicate output may not
work for normal system output to the CTY as a plain terminal, but it
should work for EDDT output being duplicated on both kinds of CTY.
(6) If you want EDDT to accept parallel input from both the real CTY and
the scanner CTY, then zero the cell SUICTY (else leave it -1). This only
affects EDDT input. Normal monitor/user input from the real CTY cannot be
suppressed with SUICTY.
Now normal TTY and EDDT type-in and type-out should work from the
scanner CTY of your choice. To undo this, restore the normal values
(from the "instead of" phrases above) changed in steps (2) through (4)
above. The values of SUICTY and SUPCTY are irrelevant if SCNCTY is -1.
(7) The command CTY 55<cr> given on (any) CTY will execute step (4).
The command CTY$ given on (any) CTY, where $ is altmode, will undo
step (4). (It is possible that this might screw up leaving TOIP set
in the CTY's TTY DDB, which means you won't get any output!) These
commands can alternatively be given from a privileged (DEV priv) job.
WSYNC
ME - If the device is not a TTY, then WSYNC will return either
(1) immediately, if IOACT (or DEVSBB if DEVIBF bit on for internal system
buffer) is already off or
(2) when IOW (which WSYNC sets) is cleared, and not before.
So you set IOACT and call WSYNC. Interrupt level calls SETIOD or STTIOD
and the job will be awakened.